/** * Name: main.js:qtext2/base * URL: http://qsf.ec.quoracdn.net/-3-main.js:qtext2.basea16247ef40f091e1.js * Generated: 1481674787728060 * Files: /third_party/rangy-core.js, /shared/rangy.js, /qtext2/constants.js, /qtext2/container.js, /qtext2/position.js, /qtext2/modifiers.js, /qtext2/span.js, /qtext2/undo.js, /qtext2/sections/plain.js, /qtext2/sections/code.js, /qtext2/sections/image.js, /qtext2/sections/horizontal_rule.js, /qtext2/sections/lists.js, /shared/embedly.js, /qtext2/sections/embed.js, /qtext2/section.js, /qtext2/formatting_state.js, /qtext2/selection.js, /qtext2/caret.js, /third_party/mutation-summary.js, /qtext2/mutations.js, /shared/parse_html.js, /qtext2/parser.js, /qtext2/command/base.js, /qtext2/command/backspace.js, /qtext2/command/code.js, /qtext2/command/copy.js, /qtext2/command/delete.js, /qtext2/command/indent.js, /qtext2/command/image.js, /qtext2/command/link.js, /qtext2/command/math.js, /qtext2/command/mention.js, /qtext2/command/paste.js, /qtext2/command/quote.js, /qtext2/command/return.js, /qtext2/command/soft_return.js, /qtext2/command/undoredo.js, /qtext2/command/video.js, /qtext2/commands.js, /qtext2/extension/tooltips.js, /qtext2/extension/autolist.js, /qtext2/extension/autolink.js, /qtext2/extension/typing_change_base.js, /qtext2/extension/ellipses.js, /qtext2/extension/hr.js, /qtext2/extension/undo_state.js, /qtext2/extension/mention.js, /qtext2/extension/non_editable_cursors.js, /qtext2/extension/smart_quotes.js, /qtext2/extension/double_space.js, /qtext2/extension/dashes.js, /qtext2/extension/arrows.js, /qtext2/extensions.js, /qtext2/base.js */ define("third_party/rangy-core",["shared/polyfills"],function e(require,exports,t){window["rangy"]=function(){var e="object",t="function",n="undefined";var i=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer","START_TO_START","START_TO_END","END_TO_START","END_TO_END"];var r=["setStart","setStartBefore","setStartAfter","setEnd","setEndBefore","setEndAfter","collapse","selectNode","selectNodeContents","compareBoundaryPoints","deleteContents","extractContents","cloneContents","insertNode","surroundContents","cloneRange","toString","detach"];var s=["boundingHeight","boundingLeft","boundingTop","boundingWidth","htmlText","text"];var o=["collapse","compareEndPoints","duplicate","getBookmark","moveToBookmark","moveToElementText","parentElement","pasteHTML","select","setEndPoint","getBoundingClientRect"];function a(n,i){var r=typeof n[i];return r==t||!!(r==e&&n[i])||r=="unknown"}function d(t,n){return!!(typeof t[n]==e&&t[n])}function c(e,t){return typeof e[t]!=n; }function l(e){return function(t,n){var i=n.length;while(i--){if(!e(t,n[i])){return false}}return true}}var f=l(a);var h=l(d);var u=l(c);function p(e){return e&&f(e,o)&&u(e,s)}var g={version:"1.2.3",initialized:false,supported:true,util:{isHostMethod:a,isHostObject:d,isHostProperty:c,areHostMethods:f,areHostObjects:h,areHostProperties:u,isTextRange:p},features:{},modules:{},config:{alertOnWarn:false,preferTextRange:false}};function m(e){window.alert("Rangy not supported in your browser. Reason: "+e);g.initialized=true;g.supported=false}g.fail=m;function v(e){var t="Rangy warning: "+e;if(g.config.alertOnWarn){window.alert(t)}else if(typeof window.console!=n&&typeof window.console.log!=n){window.console.log(t)}}g.warn=v;if({}.hasOwnProperty){g.util.extend=function(e,t){for(var n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}}}else{m("hasOwnProperty not supported")}var x=[];var C=[];function S(){if(g.initialized){return}var e;var t=false,n=false;if(a(document,"createRange")){e=document.createRange(); if(f(e,r)&&u(e,i)){t=true}e.detach()}var s=d(document,"body")?document.body:document.getElementsByTagName("body")[0];if(s&&a(s,"createTextRange")){e=s.createTextRange();if(p(e)){n=true}}if(!t&&!n){m("Neither Range nor TextRange are implemented")}g.initialized=true;g.features={implementsDomRange:t,implementsTextRange:n};var o=C.concat(x);for(var c=0,l=o.length;c["+e.childNodes.length+"]"}else{return e.nodeName}}function T(e){this.root=e;this._next=e}T.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var e=this._current=this._next;var t,n;if(this._current){t=e.firstChild;if(t){this._next=t}else{n=null;while(e!==this.root&&!(n=e.nextSibling)){e=e.parentNode}this._next=n}}return this._current},detach:function(){this._current=this._next=this.root=null}};function N(e){return new T(e)}function q(e,t){this.node=e;this.offset=t}q.prototype={equals:function(e){return this.node===e.node&this.offset==e.offset; },inspect:function(){return"[DomPosition("+w(this.node)+":"+this.offset+")]"}};function R(e){this.code=this[e];this.codeName=e;this.message="DOMException: "+this.codeName}R.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11};R.prototype.toString=function(){return this.message};e.dom={arrayContains:o,isHtmlNamespace:a,parentElement:d,getNodeIndex:c,getNodeLength:l,getCommonAncestor:f,isAncestorOf:h,getClosestAncestorIn:u,isCharacterDataNode:p,insertAfter:g,splitDataNode:m,getDocument:v,getWindow:x,getIframeWindow:S,getIframeDocument:C,getBody:b,getRootContainer:E,comparePoints:_,inspectNode:w,fragmentFromNodeChildren:y,createIterator:N,DomPosition:q};e.DOMException=R});rangy.createModule("DomRange",function(e,t){e.requireModules(["DomUtil"]);var n=e.dom;var i=n.DomPosition;var r=e.DOMException;function s(e,t){return e.nodeType!=3&&(n.isAncestorOf(e,t.startContainer,true)||n.isAncestorOf(e,t.endContainer,true)); }function o(e){return n.getDocument(e.startContainer)}function a(e,t,n){var i=e._listeners[t];if(i){for(var r=0,s=i.length;r=t.childNodes.length){t.appendChild(e)}else{t.insertBefore(e,t.childNodes[i])}return r}function f(e){var t;for(var n,i=o(e.range).createDocumentFragment(),s;n=e.next();){t=e.isPartiallySelectedSubtree();n=n.cloneNode(!t);if(t){s=e.getSubtreeIterator();n.appendChild(f(s));s.detach(true)}if(n.nodeType==10){throw new r("HIERARCHY_REQUEST_ERR")}i.appendChild(n)}return i}function h(e,t,i){var r,s;i=i||{stop:false};for(var o,a;o=e.next();){if(e.isPartiallySelectedSubtree()){if(t(o)===false){i.stop=true;return}else{a=e.getSubtreeIterator(); h(a,t,i);a.detach(true);if(i.stop){return}}}else{r=n.createIterator(o);while(s=r.next()){if(t(s)===false){i.stop=true;return}}}}}function u(e){var t;while(e.next()){if(e.isPartiallySelectedSubtree()){t=e.getSubtreeIterator();u(t);t.detach(true)}else{e.remove()}}}function p(e){for(var t,n=o(e.range).createDocumentFragment(),i;t=e.next();){if(e.isPartiallySelectedSubtree()){t=t.cloneNode(false);i=e.getSubtreeIterator();t.appendChild(p(i));i.detach(true)}else{e.remove()}if(t.nodeType==10){throw new r("HIERARCHY_REQUEST_ERR")}n.appendChild(t)}return n}function g(e,t,n){var i=!!(t&&t.length),r;var s=!!n;if(i){r=new RegExp("^("+t.join("|")+")$")}var o=[];h(new v(e,false),function(e){if((!i||r.test(e.nodeType))&&(!s||n(e))){o.push(e)}});return o}function m(e){var t=typeof e.getName=="undefined"?"Range":e.getName();return"["+t+"("+n.inspectNode(e.startContainer)+":"+e.startOffset+", "+n.inspectNode(e.endContainer)+":"+e.endOffset+")]"}function v(e,t){this.range=e;this.clonePartiallySelectedTextNodes=t; if(!e.collapsed){this.sc=e.startContainer;this.so=e.startOffset;this.ec=e.endContainer;this.eo=e.endOffset;var i=e.commonAncestorContainer;if(this.sc===this.ec&&n.isCharacterDataNode(this.sc)){this.isSingleCharacterDataNode=true;this._first=this._last=this._next=this.sc}else{this._first=this._next=this.sc===i&&!n.isCharacterDataNode(this.sc)?this.sc.childNodes[this.so]:n.getClosestAncestorIn(this.sc,i,true);this._last=this.ec===i&&!n.isCharacterDataNode(this.ec)?this.ec.childNodes[this.eo-1]:n.getClosestAncestorIn(this.ec,i,true)}}}v.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:false,reset:function(){this._current=null;this._next=this._first},hasNext:function(){return!!this._next},next:function(){var e=this._current=this._next;if(e){this._next=e!==this._last?e.nextSibling:null;if(n.isCharacterDataNode(e)&&this.clonePartiallySelectedTextNodes){if(e===this.ec){(e=e.cloneNode(true)).deleteData(this.eo,e.length-this.eo)}if(this._current===this.sc){(e=e.cloneNode(true)).deleteData(0,this.so); }}}return e},remove:function(){var e=this._current,t,i;if(n.isCharacterDataNode(e)&&(e===this.sc||e===this.ec)){t=e===this.sc?this.so:0;i=e===this.ec?this.eo:e.length;if(t!=i){e.deleteData(t,i-t)}}else{if(e.parentNode){e.parentNode.removeChild(e)}else{}}},isPartiallySelectedSubtree:function(){var e=this._current;return s(e,this.range)},getSubtreeIterator:function(){var e;if(this.isSingleCharacterDataNode){e=this.range.cloneRange();e.collapse()}else{e=new ce(o(this.range));var t=this._current;var i=t,r=0,s=t,a=n.getNodeLength(t);if(n.isAncestorOf(t,this.sc,true)){i=this.sc;r=this.so}if(n.isAncestorOf(t,this.ec,true)){s=this.ec;a=this.eo}ae(e,i,r,s,a)}return new v(e,this.clonePartiallySelectedTextNodes)},detach:function(e){if(e){this.range.detach()}this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}};function x(e){this.code=this[e];this.codeName=e;this.message="RangeException: "+this.codeName}x.prototype={BAD_BOUNDARYPOINTS_ERR:1,INVALID_NODE_TYPE_ERR:2 };x.prototype.toString=function(){return this.message};function C(e,t,n){this.nodes=g(e,t,n);this._next=this.nodes[0];this._position=0}C.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){this._current=this._next;this._next=this.nodes[++this._position];return this._current},detach:function(){this._current=this._next=this.nodes=null}};var S=[1,3,4,5,7,8,10];var b=[2,9,11];var E=[5,6,10,12];var _=[1,3,4,5,7,8,10,11];var y=[1,3,4,5,7,8];function w(e){return function(t,i){var r,s=i?t:t.parentNode;while(s){r=s.nodeType;if(n.arrayContains(e,r)){return s}s=s.parentNode}return null}}var T=n.getRootContainer;var N=w([9,11]);var q=w(E);var R=w([6,10,12]);function O(e,t){if(R(e,t)){throw new x("INVALID_NODE_TYPE_ERR")}}function D(e){if(!e.startContainer){throw new r("INVALID_STATE_ERR")}}function M(e,t){if(!n.arrayContains(t,e.nodeType)){throw new x("INVALID_NODE_TYPE_ERR")}}function I(e,t){if(t<0||t>(n.isCharacterDataNode(e)?e.length:e.childNodes.length)){throw new r("INDEX_SIZE_ERR"); }}function A(e,t){if(N(e,true)!==N(t,true)){throw new r("WRONG_DOCUMENT_ERR")}}function P(e){if(q(e,true)){throw new r("NO_MODIFICATION_ALLOWED_ERR")}}function k(e,t){if(!e){throw new r(t)}}function L(e){return!n.arrayContains(b,e.nodeType)&&!N(e,true)}function B(e,t){return t<=(n.isCharacterDataNode(e)?e.length:e.childNodes.length)}function U(e){return!!e.startContainer&&!!e.endContainer&&!L(e.startContainer)&&!L(e.endContainer)&&B(e.startContainer,e.startOffset)&&B(e.endContainer,e.endOffset)}function H(e){D(e);if(!U(e)){throw new Error("Range error: Range is no longer valid after DOM mutation ("+e.inspect()+")")}}var F=document.createElement("style");var Q=false;try{F.innerHTML="x";Q=F.firstChild.nodeType==3}catch(V){}e.features.htmlParsingConforms=Q;var W=Q?function(e){var t=this.startContainer;var i=n.getDocument(t);if(!t){throw new r("INVALID_STATE_ERR")}var s=null;if(t.nodeType==1){s=t}else if(n.isCharacterDataNode(t)){s=n.parentElement(t)}if(s===null||s.nodeName=="HTML"&&n.isHtmlNamespace(n.getDocument(s).documentElement)&&n.isHtmlNamespace(s)){ s=i.createElement("body")}else{s=s.cloneNode(false)}s.innerHTML=e;return n.fragmentFromNodeChildren(s)}:function(e){D(this);var t=o(this);var i=t.createElement("body");i.innerHTML=e;return n.fragmentFromNodeChildren(i)};var j=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"];var Y=0,z=1,X=2,J=3;var G=0,K=1,Z=2,ee=3;function te(){}te.prototype={attachListener:function(e,t){this._listeners[e].push(t)},compareBoundaryPoints:function(e,t){H(this);A(this.startContainer,t.startContainer);var i,r,s,o;var a=e==J||e==Y?"start":"end";var d=e==z||e==Y?"start":"end";i=this[a+"Container"];r=this[a+"Offset"];s=t[d+"Container"];o=t[d+"Offset"];return n.comparePoints(i,r,s,o)},insertNode:function(e){H(this);M(e,_);P(this.startContainer);if(n.isAncestorOf(e,this.startContainer,true)){throw new r("HIERARCHY_REQUEST_ERR")}var t=l(e,this.startContainer,this.startOffset);this.setStartBefore(t)},cloneContents:function(){H(this);var e,t;if(this.collapsed){return o(this).createDocumentFragment(); }else{if(this.startContainer===this.endContainer&&n.isCharacterDataNode(this.startContainer)){e=this.startContainer.cloneNode(true);e.data=e.data.slice(this.startOffset,this.endOffset);t=o(this).createDocumentFragment();t.appendChild(e);return t}else{var i=new v(this,true);e=f(i);i.detach()}return e}},canSurroundContents:function(){H(this);P(this.startContainer);P(this.endContainer);var e=new v(this,true);var t=e._first&&s(e._first,this)||e._last&&s(e._last,this);e.detach();return!t},surroundContents:function(e){M(e,y);if(!this.canSurroundContents()){throw new x("BAD_BOUNDARYPOINTS_ERR")}var t=this.extractContents();if(e.hasChildNodes()){while(e.lastChild){e.removeChild(e.lastChild)}}l(e,this.startContainer,this.startOffset);e.appendChild(t);this.selectNode(e)},cloneRange:function(){H(this);var e=new ce(o(this));var t=j.length,n;while(t--){n=j[t];e[n]=this[n]}return e},toString:function(){H(this);var e=this.startContainer;if(e===this.endContainer&&n.isCharacterDataNode(e)){return e.nodeType==3||e.nodeType==4?e.data.slice(this.startOffset,this.endOffset):""; }else{var t=[],i=new v(this,true);h(i,function(e){if(e.nodeType==3||e.nodeType==4){t.push(e.data)}});i.detach();return t.join("")}},compareNode:function(e){H(this);var t=e.parentNode;var i=n.getNodeIndex(e);if(!t){throw new r("NOT_FOUND_ERR")}var s=this.comparePoint(t,i),o=this.comparePoint(t,i+1);if(s<0){return o>0?Z:G}else{return o>0?K:ee}},comparePoint:function(e,t){H(this);k(e,"HIERARCHY_REQUEST_ERR");A(e,this.startContainer);if(n.comparePoints(e,t,this.startContainer,this.startOffset)<0){return-1}else if(n.comparePoints(e,t,this.endContainer,this.endOffset)>0){return 1}return 0},createContextualFragment:W,toHtml:function(){H(this);var e=o(this).createElement("div");e.appendChild(this.cloneContents());return e.innerHTML},intersectsNode:function(e,t){H(this);k(e,"NOT_FOUND_ERR");if(n.getDocument(e)!==o(this)){return false}var i=e.parentNode,r=n.getNodeIndex(e);k(i,"NOT_FOUND_ERR");var s=n.comparePoints(i,r,this.endContainer,this.endOffset),a=n.comparePoints(i,r+1,this.startContainer,this.startOffset); return t?s<=0&&a>=0:s<0&&a>0},isPointInRange:function(e,t){H(this);k(e,"HIERARCHY_REQUEST_ERR");A(e,this.startContainer);return n.comparePoints(e,t,this.startContainer,this.startOffset)>=0&&n.comparePoints(e,t,this.endContainer,this.endOffset)<=0},intersectsRange:function(e,t){H(this);if(o(e)!=o(this)){throw new r("WRONG_DOCUMENT_ERR")}var i=n.comparePoints(this.startContainer,this.startOffset,e.endContainer,e.endOffset),s=n.comparePoints(this.endContainer,this.endOffset,e.startContainer,e.startOffset);return t?i<=0&&s>=0:i<0&&s>0},intersection:function(e){if(this.intersectsRange(e)){var t=n.comparePoints(this.startContainer,this.startOffset,e.startContainer,e.startOffset),i=n.comparePoints(this.endContainer,this.endOffset,e.endContainer,e.endOffset);var r=this.cloneRange();if(t==-1){r.setStart(e.startContainer,e.startOffset)}if(i==1){r.setEnd(e.endContainer,e.endOffset)}return r}return null},union:function(e){if(this.intersectsRange(e,true)){var t=this.cloneRange();if(n.comparePoints(e.startContainer,e.startOffset,this.startContainer,this.startOffset)==-1){ t.setStart(e.startContainer,e.startOffset)}if(n.comparePoints(e.endContainer,e.endOffset,this.endContainer,this.endOffset)==1){t.setEnd(e.endContainer,e.endOffset)}return t}else{throw new x("Ranges do not intersect")}},containsNode:function(e,t){if(t){return this.intersectsNode(e,false)}else{return this.compareNode(e)==ee}},containsNodeContents:function(e){return this.comparePoint(e,0)>=0&&this.comparePoint(e,n.getNodeLength(e))<=0},containsRange:function(e){return this.intersection(e).equals(e)},containsNodeText:function(e){var t=this.cloneRange();t.selectNode(e);var n=t.getNodes([3]);if(n.length>0){t.setStart(n[0],0);var i=n.pop();t.setEnd(i,i.length);var r=this.containsRange(t);t.detach();return r}else{return this.containsNodeContents(e)}},createNodeIterator:function(e,t){H(this);return new C(this,e,t)},getNodes:function(e,t){H(this);return g(this,e,t)},getDocument:function(){return o(this)},collapseBefore:function(e){D(this);this.setEndBefore(e);this.collapse(false)},collapseAfter:function(e){ D(this);this.setStartAfter(e);this.collapse(true)},getName:function(){return"DomRange"},equals:function(e){return ce.rangesEqual(this,e)},isValid:function(){return U(this)},inspect:function(){return m(this)}};function ne(e){e.START_TO_START=Y;e.START_TO_END=z;e.END_TO_END=X;e.END_TO_START=J;e.NODE_BEFORE=G;e.NODE_AFTER=K;e.NODE_BEFORE_AND_AFTER=Z;e.NODE_INSIDE=ee}function ie(e){ne(e);ne(e.prototype)}function re(e,t){return function(){H(this);var i=this.startContainer,r=this.startOffset,s=this.commonAncestorContainer;var o=new v(this,true);var a,d;if(i!==s){a=n.getClosestAncestorIn(i,s,true);d=c(a);i=d.node;r=d.offset}h(o,P);o.reset();var l=e(o);o.detach();t(this,i,r,i,r);return l}}function se(t,i,r){function o(e,t){return function(n){D(this);M(n,S);M(T(n),b);var i=(e?d:c)(n);(t?a:l)(this,i.node,i.offset)}}function a(e,t,r){var s=e.endContainer,o=e.endOffset;if(t!==e.startContainer||r!==e.startOffset){if(T(t)!=T(s)||n.comparePoints(t,r,s,o)==1){s=t;o=r}i(e,t,r,s,o)}}function l(e,t,r){var s=e.startContainer,o=e.startOffset; if(t!==e.endContainer||r!==e.endOffset){if(T(t)!=T(s)||n.comparePoints(t,r,s,o)==-1){s=t;o=r}i(e,s,o,t,r)}}function f(e,t,n){if(t!==e.startContainer||n!==e.startOffset||t!==e.endContainer||n!==e.endOffset){i(e,t,n,t,n)}}t.prototype=new te;e.util.extend(t.prototype,{setStart:function(e,t){D(this);O(e,true);I(e,t);a(this,e,t)},setEnd:function(e,t){D(this);O(e,true);I(e,t);l(this,e,t)},setStartBefore:o(true,true),setStartAfter:o(false,true),setEndBefore:o(true,false),setEndAfter:o(false,false),collapse:function(e){H(this);if(e){i(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset)}else{i(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)}},selectNodeContents:function(e){D(this);O(e,true);i(this,e,0,e,n.getNodeLength(e))},selectNode:function(e){D(this);O(e,false);M(e,S);var t=d(e),n=c(e);i(this,t.node,t.offset,n.node,n.offset)},extractContents:re(p,i),deleteContents:re(u,i),canSurroundContents:function(){H(this);P(this.startContainer);P(this.endContainer); var e=new v(this,true);var t=e._first&&s(e._first,this)||e._last&&s(e._last,this);e.detach();return!t},detach:function(){r(this)},splitBoundaries:function(){H(this);var e=this.startContainer,t=this.startOffset,r=this.endContainer,s=this.endOffset;var o=e===r;if(n.isCharacterDataNode(r)&&s>0&&s0&&t=n.getNodeIndex(e)){s++}t=0}i(this,e,t,r,s)},normalizeBoundaries:function(){H(this);var e=this.startContainer,t=this.startOffset,r=this.endContainer,s=this.endOffset;var o=function(e){var t=e.nextSibling;if(t&&t.nodeType==e.nodeType){r=e;s=e.length;e.appendData(t.data);t.parentNode.removeChild(t)}};var a=function(i){var o=i.previousSibling;if(o&&o.nodeType==i.nodeType){e=i;var a=i.length;t=o.length;i.insertData(0,o.data);o.parentNode.removeChild(o);if(e==r){s+=t;r=e}else if(r==i.parentNode){var d=n.getNodeIndex(i);if(s==d){r=i;s=a}else if(s>d){s--}}}};var d=true; if(n.isCharacterDataNode(r)){if(r.length==s){o(r)}}else{if(s>0){var c=r.childNodes[s-1];if(c&&n.isCharacterDataNode(c)){o(c)}}d=!this.collapsed}if(d){if(n.isCharacterDataNode(e)){if(t==0){a(e)}}else{if(t0&&d.previousSibling);p=d.nextSibling;if(c==-1&&p&&i.isCharacterDataNode(p)){o.setEndPoint(n?"EndToStart":"EndToEnd",e);var g;if(/[\r\n]/.test(p.data)){var m=o.duplicate();var v=m.text.replace(/\r\n/g,"\r").length;g=m.moveStart("character",v);while((c=m.compareEndPoints("StartToEnd",m))==-1){g++;m.moveStart("character",1)}}else{g=o.text.length}u=new r(p,g)}else{f=(s||!n)&&d.previousSibling;h=(s||n)&&d.nextSibling;if(h&&i.isCharacterDataNode(h)){u=new r(h,0)}else if(f&&i.isCharacterDataNode(f)){u=new r(f,f.length)}else{u=new r(a,i.getNodeIndex(d))}}d.parentNode.removeChild(d);return u}function c(e,t){var n,r,s=e.offset;var o=i.getDocument(e.node);var a,d,c=o.body.createTextRange();var l=i.isCharacterDataNode(e.node);if(l){n=e.node;r=n.parentNode; }else{d=e.node.childNodes;n=s12");t.close();var n=r.getIframeWindow(e).getSelection();var i=t.documentElement;var s=i.lastChild,o=s.firstChild;var a=t.createRange();a.setStart(o,1);a.collapse(true);n.addRange(a);w=n.rangeCount==1;n.removeAllRanges();var d=a.cloneRange();a.setStart(o,0);d.setEnd(o,2);n.addRange(a);n.addRange(d);y=n.rangeCount==2;a.detach();d.detach();S.removeChild(e)})()}e.features.selectionSupportsMultipleRanges=y;e.features.collapsedNonEditableSelectionsSupported=w;var T=false,N;if(S&&s.isHostMethod(S,"createControlRange")){N=S.createControlRange();if(s.areHostProperties(N,["item","add"])){T=true; }}e.features.implementsControlRange=T;if(b){f=function(e){return e.anchorNode===e.focusNode&&e.anchorOffset===e.focusOffset}}else{f=function(e){return e.rangeCount?e.getRangeAt(e.rangeCount-1).collapsed:false}}function q(e,t,n){var i=n?"end":"start",r=n?"start":"end";e.anchorNode=t[i+"Container"];e.anchorOffset=t[i+"Offset"];e.focusNode=t[r+"Container"];e.focusOffset=t[r+"Offset"]}function R(e){var t=e.nativeSelection;e.anchorNode=t.anchorNode;e.anchorOffset=t.anchorOffset;e.focusNode=t.focusNode;e.focusOffset=t.focusOffset}function O(e){e.anchorNode=e.focusNode=null;e.anchorOffset=e.focusOffset=0;e.rangeCount=0;e.isCollapsed=true;e._ranges.length=0}function D(t){var n;if(t instanceof o){n=t._selectionNativeRange;if(!n){n=e.createNativeRange(r.getDocument(t.startContainer));n.setEnd(t.endContainer,t.endOffset);n.setStart(t.startContainer,t.startOffset);t._selectionNativeRange=n;t.attachListener("detach",function(){this._selectionNativeRange=null})}}else if(t instanceof a){n=t.nativeRange; }else if(e.features.implementsDomRange&&t instanceof r.getWindow(t.startContainer).Range){n=t}return n}function M(e){if(!e.length||e[0].nodeType!=1){return false}for(var t=1,n=e.length;t1){F(this,e)}else{this.removeAllRanges();for(var t=0,n=e.length;t1){F(this,e)}else if(t){this.addRange(e[0])}}}else{t.fail("No means of selecting a Range or TextRange was found");return false}H.getRangeAt=function(e){if(e<0||e>=this.rangeCount){throw new d("INDEX_SIZE_ERR")}else{return this._ranges[e]}};var V;if(v){V=function(t){var n;if(e.isSelectionValid(t.win)){n=t.docSelection.createRange()}else{n=r.getBody(t.win.document).createTextRange();n.collapse(true)}if(t.docSelection.type==h){k(t)}else if(A(n)){P(t,n)}else{O(t)}}}else if(s.isHostMethod(x,"getRangeAt")&&typeof x.rangeCount=="number"){V=function(t){if(T&&m&&t.docSelection.type==h){k(t)}else{t._ranges.length=t.rangeCount=t.nativeSelection.rangeCount;if(t.rangeCount){for(var n=0,i=t.rangeCount;n0){if(r[i-1].match(e)){return new n(t,i)}i--}t=t.previousSibling();if(t){r=t.getText();i=r.length}}return this.span.parent.first()},nextWordBoundary:function(e){e=e||/\W/;var t=this.span,i=this.offset+1,r=t.getText();if(this.atDocEnd()){return this}if(this.atSectionEnd()){return t.next().first()}while(t){while(ir&&o){return o.first().relativePositionInSection(e-(r-i))}else{return null}},prevPositionInSection:function(e){e=e||1;return this.relativePositionInSection(e*-1)},nextPositionInSection:function(e){return this.relativePositionInSection(e||1)}});exports.Position=n});define("qtext2/modifiers",["shared/polyfills"],function s(require,exports,e){exports.allModifiers=function(){return["bold","italic","underline","link","citation","math","code","image","embed","tweet"]};var t=exports.mutuallyExclusiveSet=function(){return["link","citation"]};exports.nonEditableSet=function(){return["image","embed","tweet"]};exports.editableSet=function(){return["bold","italic","underline","link","citation","math","code"]; };var n=exports.restrictedSets=function(){return[["image","embed","tweet"],["math"],["code"]]};var i=exports.canSetModifier=function(e,i){var r=e.parent;if(r&&r.allowedModifiers().indexOf(i)==-1){return false}if(t().indexOf(i)!=-1&&t().some(function(t){return t!=i&&e.hasModifier(t)})){return false}var s=n().some(function(t){if(t.indexOf(i)!=-1&&e.hasDifferentModifier(t)){return true}if(t.indexOf(i)==-1&&e.hasAnyModifier(t)){return true}return false});if(s){return false}return true};exports.canForceModifier=function(e,r){if(i(e,r)){return true}var s=e.parent;if(s&&s.allowedModifiers().indexOf(r)==-1){return false}if(t().indexOf(r)!=-1){return true}return n().some(function(e){return e.indexOf(r)!=-1})}});define("qtext2/span",["shared/polyfills","qtext2/container","qtext2/position","qtext2/constants","qtext2/modifiers","shared/util","qtext2/util","shared/twitter_oembed"],function o(require,exports,e){var t=require("qtext2/container").Container,n=require("qtext2/position").Position,i=require("qtext2/constants").CONTENT_TYPES,r=require("qtext2/modifiers"),s=require("shared/util").extend,o=require("qtext2/util").Util,a=require("shared/util"),d=require("shared/twitter_oembed").loadEmbeds; var c=t.create("span",{init:function(e,t){t=t||{};this.modifiers={};this._content=this.createContentNode();this.node.appendChild(this._content);this._image=null;if(e){this.setText(e)}else{this.setPlaceholder()}var n=this;a.iterItems(t,function(e,t){n.setModifier(e,t,true)})},createContentNode:function(){var e=o.create("div");e.className="content";e.qtextSpanContent=true;return e},merge:function(e){if(!this.isEditable()||!e.isEditable()){return}if(!this.hasSameModifiers(e)){return}this.setText(this.getText()+e.getText());e.parent.removeChild(e);return this},hasSameModifiers:function(e){var t=this.modifiers,n=e.modifiers,i=Object.getOwnPropertyNames(t),r=Object.getOwnPropertyNames(n);if(i.length!=r.length){return false}return i.every(function(e){if(e=="link"&&n.link){var i=t.link.url;if(i&&i.substr(-1)!="/"){i+="/"}var r=n.link.url;if(r&&r.substr(-1)!="/"){r+="/"}return i==r}return t[e]==n[e]})},toJSON:function(e,t){return{modifiers:s({},this.modifiers),text:this.getText().slice(e,t)}},previous:function(){ return this.previousSibling()||this.parent.previousSibling()&&this.parent.previousSibling().lastChild()},next:function(){return this.nextSibling()||this.parent.nextSibling()&&this.parent.nextSibling().firstChild()},first:function(){return new n(this,0)},last:function(){return new n(this,this.getLength())},updateModifiers:function(e,t){var n=Object.keys(e),i,r;for(r=0;r"},getText:function(){return this._content.textContent; },setText:function(e){this._content.textContent=e},insertText:function(e,t){var n=this.getText();this.setText(n.slice(0,t)+e+n.slice(t))},deleteText:function(e,t){this.setText(this.getText().slice(0,e)+this.getText().slice(t))},getLength:function(){if(!this.isEditable()){return 1}return this.getText().length},isOnlyWhiteSpace:function(){if(!this.isEditable()){return false}if(this.hasModifier("citation")){return false}return this.getText().trim().length==0},getFocusNode:function(){if(o.isTextNode(this._content.firstChild)){return this._content.firstChild}return this._content},setPlaceholder:function(){this._content.innerHTML="
";for(var e in this.modifiers){this.removeModifier(e)}},shouldAvoidSplitting:function(){return this.hasModifier("link")||this.hasModifier("code")||this.hasModifier("math")},split:function(e,t){var n;if(!t&&this.shouldAvoidSplitting()){return this}if(this.isEmpty()){n=new c(null,this.modifiers)}else if(e===0){n=new c(this.getText(),this.modifiers);this.setPlaceholder(); }else{n=new c(this.getText().slice(e),this.modifiers);this.setText(this.getText().slice(0,e))}this.parent.insertBefore(n,this.nextSibling());return n},_toText:function(){var e,t;e=this.getText();if(this.hasModifier("math")){e="$"+e+"$"}if(this.hasModifier("italic")){e="*"+e+"*"}if(this.hasModifier("bold")){e="**"+e+"**"}if(this.hasModifier("underline")){e="_"+e+"_"}if(this.hasModifier("link")){t=this.getModifier("link");e+=" ("+t.url+")"}return e},_toHTML:function(){var e,t;if(this.hasModifier("image")){return''}e=this.getText();e=a.escapeHTML(e);e=e.replace(/\n/gi,"
");if(this.hasModifier("italic")){e=""+e+""}if(this.hasModifier("bold")){e=""+e+""}if(this.hasModifier("underline")){e=""+e+""}if(this.hasModifier("link")){t=this.getModifier("link");e=''+e+""}if(this.hasModifier("code")){e=""+e+""}else if(this.hasModifier("math")){e=""+e+""}return e},toContent:function(e){if(e==i.TEXT){ return this._toText()}else if(e==i.HTML){return this._toHTML()}}});exports.Span=c});define("qtext2/undo",["shared/polyfills","shared/Class"],function a(require,exports,e){var t=require("shared/Class").Class;var n=t.extend({__init__:function(e){this.current={state:e,next:null,prev:null}},state:function(){return this.current.state},add:function(e){if(this.current.next){this.current.next.prev=null}this.current.next={state:e,prev:this.current,next:null};this.current=this.current.next},undo:function(){if(this.current.prev){this.current=this.current.prev}},redo:function(){if(this.current.next){this.current=this.current.next}},canUndo:function(){return!!this.current.prev},canRedo:function(){return!!this.current.next}});exports.UndoManager=n});define("qtext2/sections/plain",["shared/polyfills","qtext2/section"],function d(require,exports,e){var t=require("qtext2/section").Section;var n=t.extend({init:function(e,t,n){this._super("plain",e,t,n)},htmlIndentPrefix:"",htmlIndentSuffix:"",htmlPrefix:"

", htmlSuffix:"

"});exports.PlainSection=n});define("qtext2/sections/code",["shared/polyfills","qtext2/section"],function c(require,exports,e){var t=require("qtext2/section"),n=t.Section;var i=n.extend({init:function(e,t,n){this._super("code",e,t,n);this.children.forEach(function(e){e.removeAllModifiers()})},allowedModifiers:function(){return[]},htmlIndentPrefix:"",htmlIndentSuffix:"",htmlPrefix:"
",htmlSuffix:"
"});exports.CodeSection=i});define("qtext2/sections/image",["shared/polyfills","qtext2/section","qtext2/span","qtext2/util"],function l(require,exports,e){var t=require("qtext2/section"),n=t.Section,i=require("qtext2/span").Span,r=require("qtext2/util").Util;var s=n.extend({init:function(e,t,n){r.assert(e.length==1,"ImageSections should have exactly one child:",e);r.assert(e[0].hasModifier("image"),"missing image modifier on image span");this._super("image",e,t,n)},allowedModifiers:function(){return["image"]},htmlIndentPrefix:"",htmlIndentSuffix:"",htmlPrefix:"

",htmlSuffix:"

" });s.fromURL=function(e){return new s([new i("",{image:e})])};exports.ImageSection=s});define("qtext2/sections/horizontal_rule",["shared/polyfills","qtext2/section","qtext2/span"],function f(require,exports,e){var t=require("qtext2/section").Section,n=require("qtext2/span").Span;var i=t.extend({init:function(){var e=[new n("",{image:"/static/images/hr_img_3.png"})];this._super("horizontal-rule",e,0,false)},allowedModifiers:function(){return["image"]},getChildrenContents:function(){return""},_getHTMLPrefix:function(){return"
"},_getHTMLSuffix:function(){return""}});exports.HorizontalRuleSection=i});define("qtext2/sections/lists",["shared/polyfills","qtext2/section"],function h(require,exports,e){var t=require("qtext2/section"),n=t.Section;var i=exports.isListSection=function(e){return e instanceof r};var r=n.extend({allowsMultipleSoftReturns:function(){return true},maxIndent:function(){if(this.parent){var e=this.previousSibling();if(!e||!i(e)){return 0}else{return Math.min(2,e.getIndent()+1); }}return 2},htmlPrefix:"
  • ",htmlSuffix:"
  • "});exports.UnorderedListSection=r.extend({init:function(e,t,n){this._super("unordered-list",e,t,n)},_getTextPrefix:function(e){return this._super(e)+"* "},htmlIndentPrefix:"
      ",htmlIndentSuffix:"
    "});exports.OrderedListSection=r.extend({init:function(e,t,n){this._super("ordered-list",e,t,n)},_getTextPrefix:function(e){var t=this._super(e),n,i=this.getIndent(),r=e.indexOf(this)-1,s=1;while(r>=0){n=e[r];if(i>n.getIndent()||!(n instanceof this.constructor)){break}if(i==n.getIndent()){s++}r--}return t+s+". "},htmlIndentPrefix:"
      ",htmlIndentSuffix:"
    "})});define("shared/embedly",["shared/polyfills","interface/rpc"],function u(require,exports,e){var t=require("interface/rpc").rpc;function n(e,t){i(e,function(e){if(e){t(e)}else{t(null)}})}function i(e,n){t("/embedly_/get_oembedly_json_POST").kwargs({url:e}).success(function(e){if("error"in e){n(null)}else{n(e)}}).error(function(){n(null)}).send()}exports.getOEmbedlyData=n});define("qtext2/sections/embed",["shared/polyfills","qtext2/span","qtext2/section","qtext2/modifiers","qtext2/sections/plain","qtext2/util","shared/errors","qtext2/constants","shared/twitter_oembed","shared/embedly","gating"],function p(require,exports,e){ var t=require("qtext2/span").Span,n=require("qtext2/section").Section,i=require("qtext2/modifiers"),r=require("qtext2/sections/plain").PlainSection,s=require("qtext2/util").Util,o=require("shared/errors"),a=require("qtext2/constants").CONTENT_TYPES,d=require("shared/twitter_oembed").getTweetData;var c=n.extend({init:function(e,t,n){s.assert(e.length==1,"EmbedSections should have exactly one child:",e);s.assert(e[0].hasModifier("embed"),"missing embed modifier on embed span");this._super(this.type,e,t,n);var i=e[0].getModifier("embed").url;this._setEmbed(i)},toContent:function(e,n){var i=this.children[0].getModifier("embed").url;if(e==a.TEXT){return i}else{var r=new t(i,{link:{type:"url",url:i}});return r.toContent(e)}},toJSON:function(){var e={type:this.getType(),indent:this.getIndent(),quoted:this.isQuoted(),spans:[]};this.children.forEach(function(t){var n=t.toJSON();for(var i in n.modifiers){if(i!=="embed"){delete n.modifiers[i]}}e.spans.push(n)});return e},_setEmbed:function(){return; },allowedModifiers:function(){return i.nonEditableSet()},_onEmbedSectionCallbackError:function(){var e=this.children[0].getModifier("embed").url;this.children[0].removeModifier("embed");this.children[0].setText(e);this.children[0].setModifier("link",{type:"url",url:e});this.changeType(r)}});c.getValidRegex=function(e){var t=[];e._VALID_REGEXES.forEach(function(e){t.push("(?:"+e.source+")")});var n=t.join("|");return new RegExp(n)};c.fromOtherSection=function(e){var n=null;if(!e.isEditable()){return null}p.some(function(i){var r=g()[i];var o=true,a="",d=0;var l=c.getValidRegex(r);e.children.forEach(function(e){if(e.hasModifier("link")){var t=e.getModifier("link").url;if(t&&t.match(l)){d+=1;a=e.getModifier("link").url}else{o=false}}else{var n=e.getText();s.splitByRegex(n,l).forEach(function(e){if(e.match){d+=1;a=e.text}else{if(!e.text.match(/^ *$/)){o=false}}})}});if(d==1&&o){n=new r([new t("",{embed:{url:a}})]);return true}return false});return n};var l=c.extend({_onOEmbedCallbackSuccess:function(e,t,n,i){ var r=this.children[0].getModifier("embed");if(n!==undefined&&n!==null){s.assert(i===undefined||i===null,"If iframe_html is supplied, iframe_url has to be null / undefined.");var o=s.create("div");o.innerHTML=n;i=o.children[0].src}s.assert(i!==null,"For OEmbedSection, we have to have the iframe URL.");r.thumbnail_url=t;r.content_type=e;r.iframe={url:i};this.children[0].setModifier("embed",r);this.children[0].setModifier("image",t)}});var f=l.extend({_setEmbed:function(e){var t=this;var n=this.children[0].getModifier("embed");if(n.thumbnail_url&&n.content_type&&n.iframe&&n.iframe.url){t._onOEmbedCallbackSuccess(n.content_type,n.thumbnail_url,null,n.iframe.url)}else{require("shared/embedly").getOEmbedlyData(e,function(e){if(e){t._onOEmbedCallbackSuccess(e.type,e.thumbnail_url,e.html)}else{t._onEmbedSectionCallbackError()}})}},type:"oembedly"});f._VALID_REGEXES=[/http:\/\/www.vimeo.com\/groups\/*\/videos\/.*/,/http:\/\/www.vimeo.com\/.*/,/https:\/\/www.vimeo.com\/.*/,/http:\/\/vimeo.com\/groups\/.*\/videos\/.*/,/http:\/\/vimeo.com\/.*/,/https:\/\/vimeo.com\/.*/,/http:\/\/vimeo.com\/m\/#\/.*/,/http:\/\/player.vimeo.com\/.*/,/https:\/\/player.vimeo.com\/.*/,/http:\/\/www.hulu.com\/watch.*/,/http:\/\/www.hulu.com\/w\/.*/,/http:\/\/www.hulu.com\/embed\/.*/,/http:\/\/hulu.com\/watch.*/,/http:\/\/hulu.com\/w\/.*/,/http:\/\/hulu.tv\/.*/,/http:\/\/www.ustream.tv\/recorded\/.*/,/http:\/\/www.ustream.tv\/channel\/.*/,/http:\/\/www.ustream.tv\/.*/,/http:\/\/ustre.am\/.*/,/http:\/\/link.brightcove.com\/services\/player\/bcpid.*/,/http:\/\/bcove.me\/.*/,/http:\/\/www.vevo.com\/watch\/.*/,/http:\/\/www.vevo.com\/video\/.*/,/http:\/\/video.google.com\/videoplay\?.*/,/http:\/\/.*.dailymotion.com\/video\/.*/,/http:\/\/.*.dailymotion.com\/.*\/video\/.*/,/http:\/\/khanacademy.org\/*/,/http:\/\/www.khanacademy.org\/*/,/https:\/\/khanacademy.org\/*/,/https:\/\/www.khanacademy.org\/*/,/http:\/\/www.ted.com\/talks\/.*.html.*/,/http:\/\/www.ted.com\/talks\/lang\/.*\/.*.html*/,/http:\/\/www.ted.com\/index.php\/talks\/.*.html.*/,/http:\/\/www.ted.com\/index.php\/talks\/lang\/.*\/.*.html/,/http:\/\/www.ted.com\/talks\/.*/]; var h=c.extend({_setEmbed:function(e){var t,n;n=c.getValidRegex(h).exec(e);if(n){t=n[1]}else{o.report(new Error("VideoSection: url did not match regex: "+e));t=""}this.children[0].setModifier("image","https://img.youtube.com/vi/"+t+"/0.jpg")},type:"video",htmlIndentPrefix:"",htmlIndentSuffix:"",htmlPrefix:"

    ",htmlSuffix:"

    "});h._VALID_REGEXES=[/(?:https?:\/{2})?(?:w{3}\.)?(?:youtube\.com\/watch.+v=|youtu.be\/|youtube.com\/embed\/)([^\s?]+)(\?[^\s]+)?/];var u=c.extend({_onTweetCallbackSuccess:function(e,t){var n={root:e,shouldLoad:t};this.children[0].setModifier("tweet",n)},_setEmbed:function(e){var t=this;d(e,function(e,n){if(e){t._onTweetCallbackSuccess(e,n)}else{t._onEmbedSectionCallbackError()}})},type:"tweet",htmlIndentPrefix:"",htmlIndentSuffix:"",htmlPrefix:"

    ",htmlSuffix:"

    "});u._VALID_REGEXES=[/https:\/\/twitter.com\/.*\/status\/.*/];var p=["oembedly","video"];if(require("gating").render_tweets_as_embeds){p.push("tweet")}var g=function(){var e={};e.video=h;e.oembedly=f; if(require("gating").render_tweets_as_embeds){e.tweet=u}return e};exports.EmbedSection=c;exports.OEmbedlySection=f;exports.VideoSection=h;exports.TweetSection=u;exports.EMBED_SECTION_TYPES=p});define("qtext2/section",["shared/polyfills","qtext2/container","qtext2/constants","qtext2/modifiers","qtext2/span","qtext2/util","qtext2/sections/plain","qtext2/sections/code","qtext2/sections/image","qtext2/sections/horizontal_rule","qtext2/sections/lists","qtext2/sections/embed","gating"],function g(require,exports,e){var t=require("qtext2/container").Container,n=require("qtext2/constants").CONTENT_TYPES,i=require("qtext2/modifiers"),r=require("qtext2/span").Span,s=require("qtext2/util").Util;var o=function(){var e={};e.plain=require("qtext2/sections/plain").PlainSection;e.code=require("qtext2/sections/code").CodeSection;e.image=require("qtext2/sections/image").ImageSection;var t=require("qtext2/sections/horizontal_rule");e["horizontal-rule"]=t.HorizontalRuleSection;var n=require("qtext2/sections/lists"); e["ordered-list"]=n.OrderedListSection;e["unordered-list"]=n.UnorderedListSection;var i=require("qtext2/sections/embed");e.embed=i.EmbedSection;e.video=i.VideoSection;e.oembedly=i.OEmbedlySection;if(require("gating").render_tweets_as_embeds){e.tweet=i.TweetSection}return e};var a=t.create("section",{init:function(e,t,n,i){var o=this;t=t&&t.length!==0?t:[new r];t.slice().forEach(function(e){o.appendChild(e)});s.setData(this.node,"type",e);this.setIndent(n||0);this.setQuoted(i)},getType:function(){return s.getData(this.node,"type")},getLength:function(){var e=0;this.children.forEach(function(t){e+=t.getLength()});return e},getIndent:function(){return parseInt(s.getData(this.node,"indent"))},setIndent:function(e){e=Math.min(this.maxIndent(),Math.max(0,e));s.setData(this.node,"indent",e);return this.maxIndent()!==0},setQuoted:function(e){if(e){s.setData(this.node,"quoted","true")}else{s.removeData(this.node,"quoted")}},isQuoted:function(){return!!s.getData(this.node,"quoted")},isEditable:function(){ return!this.children.some(function(e){return!e.isEditable()})},allowsMultipleSoftReturns:function(){return false},allowedModifiers:function(){return i.editableSet()},toContent:function(e,t){var n=[];n.push(this.getContentPrefix(e,t));n.push(this.getChildrenContents(e));n.push(this.getContentSuffix(e,t));n=n.join("");return n},getChildrenContents:function(e){return this.children.map(function(t){return t.toContent(e)}).join("")},toJSON:function(){var e={type:this.getType(),indent:this.getIndent(),quoted:this.isQuoted(),spans:[]};this.children.forEach(function(t){e.spans.push(t.toJSON())});return e},first:function(){return this.firstChild().first()},last:function(){return this.lastChild().last()},getText:function(){var e="";this.children.forEach(function(t){e+=t.getText()});return e},deleteText:function(e,t){if(e.span==t.span){e.span.deleteText(e.offset,t.offset)}else{e.span.deleteText(e.offset,e.span.getLength());while(e.span.nextSibling()!=t.span){this.removeChild(e.span.nextSibling())}if(t.span){ t.span.deleteText(0,t.offset);if(t.span.isEmpty()){this.removeChild(t.span)}}}},isEmpty:function(){return this.children.length==1&&this.children[0].isEmpty()},isOnlyWhiteSpace:function(){return this.children.every(function(e){return e.isOnlyWhiteSpace()})},_createSplitSection:function(e){return new this.constructor(e,this.getIndent(),this.isQuoted())},split:function(e){var t,n,i,s,o=e.span,a=e.offset;if(a===0){if(o==this.firstChild()){this.insertBefore(new r,o)}s=o}else if(a===o.getLength()){if(o==this.lastChild()){s=new r;this.appendChild(s)}else{s=o.nextSibling()}}else{s=o.split(a,true)}t=this.children.indexOf(s)+1;i=this.children.slice(t);i.unshift(s);n=this._createSplitSection(i);this.parent.insertBefore(n,this.nextSibling());return s.first()},merge:function(e){var t,n,i;if(!e.isEditable()){if(this.isEmpty()){if(this.parent){this.parent.removeChild(this)}}t=e.first()}else if(e.isEmpty()){if(e.parent){e.parent.removeChild(e)}t=this.last()}else if(!this.isEditable()){if(this.parent){this.parent.removeChild(this); }t=e.first()}else{if(this.isEmpty()){this.removeChild(this.firstChild());this.setIndent(e.getIndent());this.setQuoted(e.isQuoted());t=e.first()}else{t=this.last()}while(e.children.length){this.appendChild(e.firstChild())}n=this.firstChild();while(n){i=n.nextSibling();if(i&&n.hasSameModifiers(i)){n=n.merge(i)}else{n=i}}if(e.parent){e.parent.removeChild(e)}}return t},changeType:function(e){var t=new e(this.children,this.getIndent(),this.isQuoted());if(this.parent){this.parent.insertBefore(t,this);this.parent.removeChild(this)}return t},getContentPrefix:function(e,t){if(e==n.TEXT){return this._getTextPrefix(t)}else if(e==n.HTML){return this._getHTMLPrefix(t)}},getContentSuffix:function(e,t){if(e==n.TEXT){return this._getTextSuffix(t)}else if(e==n.HTML){return this._getHTMLSuffix(t)}},_getTextPrefix:function(){var e,t="";for(e=0;e0){s=e[n-1];if(s instanceof this.constructor){r=s.getIndent()}if(this.isQuoted()&&!s.isQuoted()){t+="
    "}}else if(this.isQuoted()){t+="
    "}while(i>r){t+=this.htmlIndentPrefix;i--}return t+this.htmlPrefix},_getHTMLSuffix:function(e){var t=this.htmlSuffix,n=e.indexOf(this),i=this.getIndent(),r=-1,s;if(nr){i--;t+=this.htmlIndentSuffix}if(this.isQuoted()&&(!s||!s.isQuoted())){t+="
    "}return t},maxIndent:function(){return 0}});a.fromJSON=function(e){var t=[],n=o()[e.type];e.spans.forEach(function(e){t.push(new r(e.text,e.modifiers))});return new n(t,e.indent,e.quoted)};exports.Section=a});define("qtext2/formatting_state",["shared/polyfills","shared/Class","qtext2/util"],function m(require,exports,e){var t=require("shared/Class").Class,n=require("qtext2/util").Util;exports.FormattingState=t.extend({__init__:function(e){this._modifiers={};this.update(e)},is:function(e){return e in this._modifiers; },update:function(e){this.updatePosition(e);this._modifiers=e.start.span.getModifiers();if(!this._isLinked()){delete this._modifiers.link;delete this._modifiers.citation}},updatePosition:function(e){this.caret=e;this.position=e.start.clone();this.spanLength=e.start.span.getLength()},_isLinked:function(){var e=this.caret.start.span;if(!(e.hasModifier("link")||e.hasModifier("citation"))){return false}if(this.caret.isCollapsed()){return!this.caret.start.atSpanStart()&&!this.caret.start.atSpanEnd()}return e==this.caret.end.span},toggleModifier:function(e,t){if(t in this._modifiers){delete this._modifiers[t]}else if(t!="link"&&t!="citation"){this._modifiers[t]=true}this.position=e.start.clone()},hasChanged:function(e){return!n.jsonEqual(this._modifiers,e.start.span.getModifiers())&&this.spanLength!=e.start.span.getLength()},apply:function(e){var t=!n.jsonEqual(e.modifiers,this._modifiers);e.removeAllModifiers();e.updateModifiers(this._modifiers);return t}})});define("qtext2/selection",["shared/polyfills","shared/Class"],function v(require,exports,e){ var t=require("shared/Class").Class;var n=exports.Selection=t.extend({__init__:function(e,t,n){this.start=e;this.end=t;this.doc=n},toJSON:function(){return{start:this.start.toJSON(),end:this.end.toJSON()}},equals:function(e){return this.start.equals(e.start)&&this.end.equals(e.end)},getStartNode:function(){return this.start.span.getFocusNode()},getEndNode:function(){return this.end.span.getFocusNode()},moveStart:function(e){this.start.span=e.span;this.start.offset=e.offset},moveEnd:function(e){this.end.span=e.span;this.end.offset=e.offset},isCollapsed:function(){return this.start.equals(this.end)},charBefore:function(){return this.start.charBefore()},hasCharBefore:function(){return this.start.hasCharBefore()},previousTextUntil:function(e){var t=this.start.span,n=this.start.offset,i="";while(t&&t!=e.span){i=t.getText().substring(0,n)+i;t=t.previousSibling();if(t){n=t.getLength()}}if(t){i=t.getText().substring(e.offset,n)+i}return i},hasCharAfter:function(){return this.start.hasCharAfter(); },charAfter:function(){return this.end.charAfter()},charPosition:function(){var e=this.start.offset;var t=this.start.span.previousSibling();while(t){e+=t.getLength();t=t.previousSibling()}var n=this.start.span.parent.previousSibling();while(n){e+=n.getLength()+1;n=n.previousSibling()}return e},containsEntireSection:function(e){var t=this.start,n=this.end,i;i=t.span.parent;while(i&&i.previousSibling()!=n.span.parent){if(e==i&&(t.span.parent!=e||t.atSectionStart())&&(n.span.parent!=e||n.atSectionEnd())){return true}i=i.nextSibling()}return false},getCoveringSpans:function(){var e=this.start.span,t=[];while(e&&e!=this.end.span){t.push(e);e=e.next()}t.push(e);return t},getText:function(){var e="";if(this.start.span.parent!=this.end.span.parent){var t=this.start.span.parent,i=this.end.span.parent,r=new n(this.start,t.last()),s=new n(i.first(),this.end);e+=r.getText();for(var o=t.nextSibling();o&&o!=i;o=o.nextSibling()){e+=o.getText()}e+=s.getText();return e}var a=this.start.span,d=this.start.offset; while(a&&a!=this.end.span){e+=a.getText().substring(d,a.getLength());d=0;a=a.nextSibling()}if(a){e+=a.getText().substring(d,this.end.offset)}return e}})});define("qtext2/caret",["shared/polyfills","shared/Class","interface/jquery","qtext2/util","shared/rangy","settings","qtext2/span","qtext2/section","qtext2/base","qtext2/position","qtext2/selection","shared/client"],function x(require,exports,e){var t=require("shared/Class").Class,$=require("interface/jquery")._jQuery,n=require("qtext2/util").Util,i=require("shared/rangy").rangy,r=require("settings"),s=r.pageIsMobile,o=require("qtext2/span").Span,a=require("qtext2/section").Section,d=require("qtext2/base"),c=require("qtext2/position").Position,l=require("qtext2/selection").Selection,f=require("shared/client"),h;if(s){h=require("mobile_app2/messages")}exports.Caret=t.extend({__init__:function(e,t,n){this.selection=new l(e,t,n);this.doc=n;var i=this;Object.defineProperty(i,"start",{get:function(){return i.selection.start},set:function(e){ i.selection=new l(e,i.end)}});Object.defineProperty(i,"end",{get:function(){return i.selection.end},set:function(e){i.selection=new l(i.start,e)}})},toJSON:function(){return this.selection.toJSON()},getStartNode:function(){return this.selection.getStartNode()},getEndNode:function(){return this.selection.getEndNode()},moveStart:function(e){return this.selection.moveStart(e)},moveEnd:function(e){return this.selection.moveEnd(e)},move:function(e,t,n){t=t||e;var i=true;if(this.start.equals(e)&&this.end.equals(t)){i=false}this.start.span=e.span;this.start.offset=e.offset;this.end.span=t.span;this.end.offset=t.offset;this._apply(n);return i},isCollapsed:function(){return this.selection.isCollapsed()},charBefore:function(){return this.selection.charBefore()},hasCharBefore:function(){return this.selection.hasCharBefore()},previousTextUntil:function(e){return this.selection.previousTextUntil(e)},charAfter:function(){return this.selection.charAfter()},charPosition:function(){return this.selection.charPosition(); },hasCharAfter:function(){return this.selection.hasCharAfter()},updateAndroidCaretPosition:function(e){e=e||0;if(s&&f.isAndroidApp()){h.send("setCaretPos",{selectionStart:this.charPosition()+e})}},update:function(e){var t=i.getSelection(),n,r,s;if(!t.anchorNode){return false}if(t.isCollapsed){n=r=this._fromNode(t.anchorNode,t.anchorOffset)}else{s=t.getRangeAt(0);n=this._fromNode(s.startContainer,s.startOffset);r=this._fromNode(s.endContainer,s.endOffset)}if(!(n&&r)){return false}return this.move(n,r,e)},_fromNode:function(e,t){var n,i,l,h;if(!this.doc.contains(e)){if(s&&f.isAndroidApp()&&r.osVersion<4.4){var u=e;while(u){if(d.Doc.is(u)){break}u=u.parentNode}if(!u){return null}}else{return null}}if(d.Doc.is(e)){h=d.Doc.get(e);if(t===0){i=h.firstChild().firstChild();l=0}else{i=h.lastChild().lastChild();l=i.getLength()}}else if(a.is(e)){n=a.get(e);if(t===0){i=n.firstChild();l=0}else{i=n.lastChild();l=i.getLength()}}else if(o.is(e.parentNode)&&(t===1||t===0)){i=o.get(e.parentNode);l=t===0?0:i.getLength(); }else{while(e&&!o.is(e)){e=e.parentNode}if(!e){return null}i=o.get(e);l=t}return new c(i,l)},_apply:function(e){var t=i.getSelection(),n=this.getStartNode(),r,s;if(this.isCollapsed()){if(!e&&t.isCollapsed&&n==t.anchorNode&&this.start.offset==t.anchorOffset){return}s=i.createRange();s.setStart(n,this.start.offset);s.setEnd(n,this.start.offset);s.collapse(true);t.removeAllRanges();t.addRange(s)}else{r=this.end.span.getFocusNode();if(!t.isCollapsed){s=t.getRangeAt(0);if(!e&&n==s.startContainer&&this.start.offset==s.startOffset&&r==s.endContainer&&this.end.offset==s.endOffset){return}}else{s=i.createRange()}s.setStart(n,this.start.offset);s.setEnd(r,this.end.offset);t.removeAllRanges();t.addRange(s)}return},getAbsolutePosition:function(){var e=window.getSelection(),t=n.firstScrollingParent(this.doc.node),r=document.body.parentElement,s=e.rangeCount>0&&e.getRangeAt(0),o=s?s.getClientRects():[];if(o.length>0){var a={top:o[0].top,left:o[0].left};a.top+=t.scrollTop||r.scrollTop;a.left+=t.scrollLeft||r.scrollLeft; return a}var d=i.getSelection().anchorNode;if(n.isTextNode(d)){d=this.start.span.parent.node}if($(d).children().first().is("img")){return $(d).children().first().offset()}return n.getContainerOffset(d)},scrollIntoViewIfNeeded:function(){if(!this.isCollapsed()){return}if(!i.getSelection().anchorNode){return}var e=this.getAbsolutePosition(),t=n.firstScrollingParent(this.doc.node),r=document.body.parentElement,o=t.scrollTop||r.scrollTop,a=o+window.innerHeight,d,c,l=30;if(!s){a-=50}if(!e){return}d=e.top;c=d+l;setTimeout(function(){if(da){t.scrollTop+=c-a;r.scrollTop+=c-a}},0)},containsEntireSection:function(e){return this.selection.containsEntireSection(e)},mergeAdjacentSpans:function(){if(!this.isCollapsed()){return}var e=this.start.span,t=e.nextSibling(),i=e.previousSibling(),r=this.start.offset;if(t&&n.jsonEqual(e.modifiers,t.modifiers)){e.setText(e.getText()+t.getText());t.parent.removeChild(t);this.move(new c(e,r))}if(i&&n.jsonEqual(e.modifiers,i.modifiers)){ r+=i.getLength();e.setText(i.getText()+e.getText());i.parent.removeChild(i);this.move(new c(e,r))}},getCoveringSpans:function(){return this.selection.getCoveringSpans()}})});define("third_party/mutation-summary",["shared/polyfills"],function C(require,exports,e){var t=this.__extends||function(e,t){for(var n in t)if(t.hasOwnProperty(n))e[n]=t[n];function i(){this.constructor=e}i.prototype=t.prototype;e.prototype=new i};var n;if(typeof WebKitMutationObserver!=="undefined")n=WebKitMutationObserver;else n=MutationObserver;if(n===undefined){console.error("DOM Mutation Observers are required.");console.error("https://developer.mozilla.org/en-US/docs/DOM/MutationObserver");throw Error("DOM Mutation Observers are required")}var i=function(){function e(){this.nodes=[];this.values=[]}e.prototype.isIndex=function(e){return+e===e>>>0};e.prototype.nodeId=function(t){var n=t[e.ID_PROP];if(!n)n=t[e.ID_PROP]=e.nextId_++;return n};e.prototype.set=function(e,t){var n=this.nodeId(e);this.nodes[n]=e;this.values[n]=t; };e.prototype.get=function(e){var t=this.nodeId(e);return this.values[t]};e.prototype.has=function(e){return this.nodeId(e)in this.nodes};e.prototype["delete"]=function(e){var t=this.nodeId(e);delete this.nodes[t];this.values[t]=undefined};e.prototype.keys=function(){var e=[];for(var t in this.nodes){if(!this.isIndex(t))continue;e.push(this.nodes[t])}return e};e.ID_PROP="__mutation_summary_node_map_id__";e.nextId_=1;return e}();var r;(function(e){e[e["STAYED_OUT"]=0]="STAYED_OUT";e[e["ENTERED"]=1]="ENTERED";e[e["STAYED_IN"]=2]="STAYED_IN";e[e["REPARENTED"]=3]="REPARENTED";e[e["REORDERED"]=4]="REORDERED";e[e["EXITED"]=5]="EXITED"})(r||(r={}));function s(e){return e===r.ENTERED||e===r.EXITED}var o=function(){function e(e,t,n,i,r,s,o,a){if(t===void 0){t=false}if(n===void 0){n=false}if(i===void 0){i=false}if(r===void 0){r=null}if(s===void 0){s=false}if(o===void 0){o=null}if(a===void 0){a=null}this.node=e;this.childList=t;this.attributes=n;this.characterData=i;this.oldParentNode=r;this.added=s; this.attributeOldValues=o;this.characterDataOldValue=a;this.isCaseInsensitive=this.node.nodeType===window.Node.ELEMENT_NODE&&this.node instanceof window.HTMLElement&&this.node.ownerDocument instanceof window.HTMLDocument}e.prototype.getAttributeOldValue=function(e){if(!this.attributeOldValues)return undefined;if(this.isCaseInsensitive)e=e.toLowerCase();return this.attributeOldValues[e]};e.prototype.getAttributeNamesMutated=function(){var e=[];if(!this.attributeOldValues)return e;for(var t in this.attributeOldValues){e.push(t)}return e};e.prototype.attributeMutated=function(e,t){this.attributes=true;this.attributeOldValues=this.attributeOldValues||{};if(e in this.attributeOldValues)return;this.attributeOldValues[e]=t};e.prototype.characterDataMutated=function(e){if(this.characterData)return;this.characterData=true;this.characterDataOldValue=e};e.prototype.removedFromParent=function(e){this.childList=true;if(this.added||this.oldParentNode)this.added=false;else this.oldParentNode=e};e.prototype.insertedIntoParent=function(){ this.childList=true;this.added=true};e.prototype.getOldParent=function(){if(this.childList){if(this.oldParentNode)return this.oldParentNode;if(this.added)return null}return this.node.parentNode};return e}();var a=function(){function e(){this.added=new i;this.removed=new i;this.maybeMoved=new i;this.oldPrevious=new i;this.moved=undefined}return e}();var d=function(e){t(n,e);function n(t,n){e.call(this);this.rootNode=t;this.reachableCache=undefined;this.wasReachableCache=undefined;this.anyParentsChanged=false;this.anyAttributesChanged=false;this.anyCharacterDataChanged=false;for(var i=0;i1)throw Error("Invalid request option. all has no options.");i.queries.push({all:true});continue}if("attribute"in s){var o={attribute:v(s.attribute)};o.elementFilter=g.parseSelectors("*["+o.attribute+"]");if(Object.keys(s).length>1)throw Error("Invalid request option. attribute has no options.");i.queries.push(o);continue}if("element"in s){var a=Object.keys(s).length; var o={element:s.element,elementFilter:g.parseSelectors(s.element)};if(s.hasOwnProperty("elementAttributes")){o.attributeList=x(s.elementAttributes);a--}if(a>1)throw Error("Invalid request option. element only allows elementAttributes option.");i.queries.push(o);continue}if(s.characterData){if(Object.keys(s).length>1)throw Error("Invalid request option. characterData has no options.");i.queries.push({characterData:true});continue}throw Error("Invalid request option. Unknown query request.")}return i};e.prototype.createSummaries=function(e){if(!e||!e.length)return[];var t=new c(this.root,e,this.elementFilter,this.calcReordered,this.options.oldPreviousSibling);var n=[];for(var i=0;i0){var t=this.spans[this.spans.length-1];if(i.jsonEqual(t.modifiers,this.modifiers)){var n=t.getText();t.setText(n+e);this.content="";return}}this.spans.push(new a(e,this.modifiers)); this.content=""},_getModifier:function(e){return{B:"bold",STRONG:"bold",I:"italic",EM:"italic",U:"italic",A:"link",CODE:"code",MATH:"math"}[e.nodeName.toUpperCase()]},_getModifierValue:function(e){return{B:true,I:true,EM:true,U:true,A:{type:"url",url:e.href},CODE:true,MATH:true}[e.nodeName.toUpperCase()]}});var _=function(e,t,n){var i=new E(t,n);i.visit(e);return i.spans};var y=function(e,t){var n,r=e.nodeName.toUpperCase()=="OL"?p:u,s=[],o;t=t||0;i.assert(x(e.nodeName),"Unknown list type",e);for(var a=e.firstElementChild;a;a=a.nextElementSibling){n=a.nodeName.toUpperCase();if(n=="LI"){o=new r(_(a,{}));o.setIndent(t);s.push(o)}else if(x(n)){s=s.concat(y(a,t+1))}}return s};var w=function(e){var t=[],n=new h,i,r;t.push(n);for(r=e.firstChild;r;r=r.nextSibling){if(r.nodeName.toUpperCase()=="BR"){n=new h;t.push(n)}else{i=n.firstChild();i.setText(i.getText()+r.textContent)}}return t};var T=function(e,t){var n,o=[],a,d=new c({});t=t||{};var l=function(){if(o.length){var e=new f(o);if(/\S/.test(e.getText())){ d.appendChild(e);var t=e.firstChild();while(t){var n=t.getText();var i=n.indexOf("\n\n");if(i==-1){t=t.nextSibling();continue}t.setText(n.replace("\n\n",""));t.parent.split(new s(t,i));t=d.lastChild().firstChild()}}o=[]}};for(var h=e.firstChild;h;h=h.nextSibling){n=h.nodeName.toUpperCase();if(n=="SPAN"&&h.textContent.length!==0||i.isTextNode(h)||n=="BR"||v(n)){o=_(h,t,o)}else{l();if(b(h)){}else if(x(n)){d.appendChildren(y(h))}else if(C(n)){d.appendChildren(T(h,r({bold:true},t)))}else if(S(n)){a=T(h);a.forEach(function(e){e.setQuoted(true)});d.appendChildren(a)}else if(n=="HR"){d.appendChild(new m)}else if(n=="PRE"){d.appendChildren(w(h))}else if(n=="IMG"){if(!h.src.startsWith("file://")){d.appendChild(g.fromURL(h.src))}}else{d.appendChildren(T(h))}}}l();d.destroy();return d.children.slice(1,d.children.length)};var N=function(e){var t=o(e),i;i=T(t);n.log("qtext2",t);return i};var q=function(e){var t=[];if(e.length===0){return[]}i.splitLines(e).forEach(function(e){t.push(new f([new a(e)])); });return t};var R=function(e,t){if(t==l.HTML||t==l.PUBLIC_HTML){return N(e)}if(t==l.TEXT){return q(e)}return[]};exports.parseHTML=N;exports.parseText=q;exports.parse=R});define("qtext2/command/base",["shared/polyfills","shared/Class","qtext2/modifiers"],function _(require,exports,e){var t=require("shared/Class").Class,n=require("qtext2/modifiers").canForceModifier;var i=exports.Command=t.extend({__init__:function(e){this.doc=e},exec:function(e){throw new Error("Sub-classes should implement this method.")},shouldExec:function(e){return true},run:function(e){if(!this.shouldExec(e)){return true}return this.exec.apply(this,arguments)}});exports.spanModifierToggle=function(e){return i.extend({exec:function(){this.doc.saveState();return this.doc.toggleModifier(e)},shouldExec:function(){var t=this.doc.caret.getCoveringSpans();return t.some(function(t){return t.hasModifier(e)||n(t,e)})}})};exports.sectionTypeToggle=function(e){return i.extend({exec:function(){this.doc.saveState();return this.doc.toggleSectionType(e); }})};exports.eventProxy=function(e){return i.extend({exec:function(){return this.doc.trigger(e)}})}});define("qtext2/command/backspace",["shared/polyfills","qtext2/command/base","qtext2/position","qtext2/sections/plain"],function y(require,exports,e){var t=require("qtext2/command/base").Command,n=require("qtext2/position").Position,i=require("qtext2/sections/plain").PlainSection;exports.Backspace=t.extend({exec:function(){this.doc.saveState();var e=this._actualBackspace();this.doc.updateSpellingSuggestions();this.doc.caret.scrollIntoViewIfNeeded();return e},_actualBackspace:function(){var e,t,r,s;if(!this.doc.caret.isCollapsed()){this.doc._deleteSelection(true);return false}r=this.doc.caret.start.clone();e=r.span.parent;t=e.previousSibling();s=r.span.getText();if(!e.isEditable()){if(this.doc.caret.start.atSectionStart()){if(t&&t.isEmpty()){this.doc.removeChild(t)}}else{if(!t){t=new i;this.doc.insertBefore(t,e)}this.doc.removeChild(e);this.doc.moveCaret(t.last());this.doc.caret.updateAndroidCaretPosition(); }return false}if(r.atDocStart()){e=this.doc.progressivelyExitSection(e);this.doc.moveCaret(e.first(),e.first(),true);return false}if(r.atSectionStart()){if(e.getIndent()>0){e.setIndent(e.getIndent()-1);this.doc.caret.updateAndroidCaretPosition()}else{if(!t.isEditable()&&!e.isEmpty()){this.doc.moveCaret(t.last())}else{this.doc.moveCaret(t.merge(e));this.doc.caret.mergeAdjacentSpans()}}return false}if(r.atSpanStart()){r.span=r.span.previous();r.offset=r.span.getLength();s=r.span.getText()}var o=s.slice(0,r.offset),a=s.slice(r.offset),d=0;for(var c=o.length;c>0;c--){if(o[c-1]!="\n"){break}d+=1}if(d==1&&a.startsWith("\n")){a=a.slice(1)}o=o.slice(0,-1);if(r.atSectionEnd()&&o.endsWith("\n")&&d===0){o=o+"\n"}r.span.setText(o+a);if(r.span.isEmpty()){r=this.doc._handleEmptySpan(r.span,true);this.doc.moveCaret(r,r,true)}else{this.doc.moveCaret(new n(r.span,o.length))}return false}})});define("qtext2/command/code",["shared/polyfills","qtext2/command/base","qtext2/sections/code","qtext2/modifiers"],function w(require,exports,e){ var t=require("qtext2/command/base").Command,n=require("qtext2/sections/code").CodeSection,i=require("qtext2/modifiers").canForceModifier;exports.Code=t.extend({exec:function(){this.doc.saveState();if(this.doc.caret.isCollapsed()){if(this.doc.formattingState.is("code")||!this.doc.allowsMultipleSections()){this.doc.toggleModifier("code")}else{this.doc.toggleSectionType(n)}return false}var e=this.doc._getSelectedSections();var t=e.some(function(e){return!e.isEditable()});if(!t&&this.doc.caret.start.atSectionStart()&&this.doc.caret.end.atSectionEnd()){this.doc.toggleSectionType(n)}else{this.doc._toggleMathOrCodeModifier("code")}return false},shouldExec:function(){if(this.doc.caret.isCollapsed()){return this.doc.caret.start.span.parent.isEditable()}var e=this.doc._getSelectedSections();var t=e.some(function(e){return!e.isEditable()});if(!t&&this.doc.caret.start.atSectionStart()&&this.doc.caret.end.atSectionEnd()){return true}var n=this.doc.caret.getCoveringSpans();return n.some(function(e){ return i(e,"code")})}})});define("qtext2/command/copy",["shared/polyfills","qtext2/command/base","qtext2/section","interface/settings","qtext2/constants","shared/client","shared/browser"],function T(require,exports,e){var t=require("qtext2/command/base").Command,n=require("qtext2/section").Section,i=require("interface/settings").pageIsMobile,r=require("qtext2/constants").CONTENT_TYPES,s=require("shared/client"),o=require("shared/browser"),a;if(i){a=require("mobile_app2/messages")}exports.Copy=t.extend({exec:function(e,t){if(i&&s.isIOSMobileWeb()){return}if(o.msedge){return}var d=this._selectedSectionsJSON(),c=d.map(n.fromJSON),l=this.getContentForType(c,r.TEXT),f=this.getContentForType(c,r.HTML);t.clipboardData.setData(r.TEXT,l);t.clipboardData.setData(r.HTML,f);t.preventDefault();t.stopPropagation();if(i){if(s.isIOSApp()){a.send("setClipboard",{text:l,html:f})}}if(e=="cut"){this.doc._deleteSelection()}},getContentForType:function(e,t){return e.map(function(n){return n.toContent(t,e)}).join(""); },_selectedSectionsJSON:function(){if(this.doc.caret.isCollapsed()){return[]}var e=[],t=this.doc.caret.start.clone(),n=this.doc.caret.end.clone(),i=t.span,r,s;for(i=t.span;i&&i.previous()!=n.span;i=i.next()){if(t.span===i&&t.atSpanEnd()||n.span===i&&n.atSpanStart()){continue}if(r!=i.parent){r=i.parent;s=r.toJSON();s.spans=[];e.push(s)}var o=t.span===i?t.offset:undefined;var a=n.span===i?n.offset:undefined;s.spans.push(i.toJSON(o,a))}return e}})});define("qtext2/command/delete",["shared/polyfills","qtext2/command/base","qtext2/sections/plain"],function N(require,exports,e){var t=require("qtext2/command/base").Command,n=require("qtext2/sections/plain").PlainSection;exports.Delete=t.extend({exec:function(e){this.doc.saveState();if(this.doc.caret.isCollapsed()){if(e=="delete"){return this._deleteSingle()}if(e=="delete-forward"){this.doc.moveCaretEnd(this.doc.caret.start.span.parent.last())}else if(e=="delete-backward"){this.doc.moveCaretStart(this.doc.caret.start.span.parent.first())}else if(e=="delete-next-word"){ this.doc.moveCaretEnd(this.doc.caret.start.nextWordBoundary())}else if(e=="delete-previous-word"){this.doc.moveCaretStart(this.doc.caret.start.previousWordBoundary())}}return this._deleteSelection()},_deleteSelection:function(){if(!this.doc.caret.isCollapsed()){this.doc._deleteSelection(false);return false}},_deleteSingle:function(){var e,t,i;i=this.doc.caret.start.clone();e=i.span.parent;t=e.nextSibling();if(!this.doc.caret.isCollapsed()){return}if(!e.isEditable()){if(this.doc.caret.start.atSectionEnd()){if(t&&t.isEmpty()){this.doc.removeChild(t)}}else{if(!t){t=new n;this.doc.insertBefore(t,e)}this.doc.removeChild(e);this.doc.moveCaret(t.first());this.doc.caret.updateAndroidCaretPosition()}return false}if(i.atDocEnd()){return false}if(i.atSectionEnd()){e=i.span.parent;this.doc.moveCaret(e.merge(e.nextSibling()));return false}if(i.atSpanEnd()){i.span=i.span.next();i.offset=0}i.span.deleteText(i.offset,i.offset+1);if(i.span.isEmpty()){this.doc.moveCaret(this.doc._handleEmptySpan(i.span,true)); }else{this.doc.moveCaret(i)}return false}})});define("qtext2/command/indent",["shared/polyfills","qtext2/command/base","qtext2/sections/code","qtext2/position"],function q(require,exports,e){var t=require("qtext2/command/base").Command,n=require("qtext2/sections/code").CodeSection,i=require("qtext2/position").Position;exports.Indent=t.extend({exec:function(e){if(e=="indent"){return this._indent()}else{return this._deindent()}},_maybeInsertTab:function(){var e=this.doc.caret.isCollapsed(),t=this.doc.caret.start.clone(),r=t.span,s=r.parent,o=r.getText(),a=t.offset;if(e&&s instanceof n){r.setText(o.slice(0,a)+" "+o.slice(a));this.doc.moveCaret(new i(r,a+1));return true}return false},_afterIndent:function(e){if(e){this.doc.forceDomReflow()}this.doc.updateCaret()},_indent:function(){if(this._maybeInsertTab()){return false}var e=this.doc._getSelectedSections();var t=false;e.forEach(function(e){if(e.setIndent(e.getIndent()+1)){t=true}});this._afterIndent(t);return!t},_deindent:function(){var e=this.doc._getSelectedSections(); var t=false;e.forEach(function(e){if(e.setIndent(e.getIndent()-1)){t=true}});this._afterIndent(t);return!t}})});define("qtext2/command/image",["shared/polyfills","qtext2/command/base","qtext2/sections/image","qtext2/sections/plain","qtext2/sections/lists"],function R(require,exports,e){var t=require("qtext2/command/base").Command,n=require("qtext2/sections/image").ImageSection,i=require("qtext2/sections/plain").PlainSection,r=require("qtext2/sections/lists").OrderedListSection;exports.Image=t.extend({exec:function(e,t){if(t.length===0){return}this.doc.saveState();var s=this.doc.caret.start.clone(),o=s.span.parent,a,d;if(s.atSectionStart()){a=o}else{if(!s.atSectionEnd()){o.split(s)}a=o.nextSibling()}for(d=0;ds){this.doc.moveCaret(n.first())}else{this.doc.moveCaret(n.last())}this.doc.updateCaret()},_sectionFromNode:function(e){var t=e;while(t){if(n.is(t)){return n.get(t)}t=t.parentElement}return null}})});define("qtext2/extension/smart_quotes",["shared/polyfills","qtext2/extension/typing_change_base","qtext2/position","qtext2/selection","qtext2/constants"],function J(require,exports,e){var t=require("qtext2/extension/typing_change_base").TypingExtension,n=require("qtext2/position").Position,i=require("qtext2/selection").Selection,r=require("qtext2/constants");exports.SmartQuotes=t.extend({ install:function(){this.initializeConstants();this.doc.on("keypress",this.onKeypress.bind(this));this.doc.on("command-space",this.onSpace.bind(this))},onSpace:function(){if(!this.isActive()){return}var e=this.doc.caret.start.previousWordBoundary(/\s/),t=e.charAfter(),n=this.doc.caret.start;if(t!==null&&e.atSpanEnd()){e=e.span.nextSibling().first()}if(t===r.OPEN_SINGLE_QUOTE){var i=this.doc.caret.previousTextUntil(e).slice(1);if(this.frontApostropheRegex.test(i)){var s=e.span.getText();e.span.setText(s.slice(0,e.offset)+r.CLOSE_SINGLE_QUOTE+s.slice(e.offset+1));this.doc.moveCaret(n)}}},onKeypress:function(e,t){if(!this.isActive()){return}if(t=="'"){this.handleSingleQuote();this.doc.updateSpellingSuggestions();return false}if(t=='"'){this.handleDoubleQuote();this.doc.updateSpellingSuggestions();return false}if(t.toUpperCase()=="S"){if(this.doc.caret.start.charBefore()==r.SINGLE_PRIME){var n=this.doc.caret.start.prevPositionInSection(),i=this.doc.caret.start.span.parent;i.deleteText(n,this.doc.caret.start); n.span.insertText(r.CLOSE_SINGLE_QUOTE,n.offset);this.doc.moveCaret(n.nextPositionInSection());this.doc.updateSpellingSuggestions();return}}},handleSingleQuote:function(){var e=this.doc.caret.charBefore(),t=r.CLOSE_SINGLE_QUOTE,n=this.doc.caret,s=n.start.span.parent,o=new i(s.first(),n.start);if(e===null||r.WORD_START_REGEX.test(e)){t=r.OPEN_SINGLE_QUOTE}else if(this.primeRegex.test(e)){if(!this.unclosedSingleQuoteRegex.test(o.getText())){t=r.SINGLE_PRIME}}this.insertChar(t)},handleDoubleQuote:function(){var e=this.doc.caret.charBefore(),t=r.CLOSE_DOUBLE_QUOTE,n=this.doc.caret,s=n.start.span.parent,o=new i(s.first(),n.start);if(e===null||/\s|[({[]/.test(e)){t=r.OPEN_DOUBLE_QUOTE}else if(this.primeRegex.test(e)){if(!this.unclosedDoubleQuoteRegex.test(o.getText())){t=r.DOUBLE_PRIME}}this.insertChar(t)},insertChar:function(e){var t=this.doc.caret.start,i=t.span,r=i.getText(),s=t.offset;i.setText(r.slice(0,s)+e+r.slice(s));this.doc.moveCaret(new n(i,s+1))},initializeConstants:function(){var e=Object.keys(r.FRACTIONS).join(""); this.primeRegex=new RegExp("\\d|["+e+"]");var t=["bout","cause","course","d","e_ll","em","er","ere","e_s","fraid","fro","kay","lo","m","n","n_","pon","round","sblood","scuse","sfar","sfoot","sup","t","taint","tain_t","til","tis","tisn_t","tshall","twas","twasn_t","tween","twere","tweren_t","twill","twixt","twon_t","twou_d","twou_dn_t","twould","twouldn_t","um","ve"];var n="['‘’′]";var i="";for(var s=0;s"){d=new i(c,this.doc.caret.start);if(!this.isActive(d)){return}if(d.getText()==r.EM_DASH){o.deleteText(c,this.doc.caret.start);c.span.insertText(r.RIGHT_ARROW,c.offset);this.doc.moveCaret(new n(s,a));this.doc.caret.updateAndroidCaretPosition();return false}return}if(t=="-"){var l=c.prevPositionInSection();if(!l){return}d=new i(l,this.doc.caret.start);if(!this.isActive(d)){return}var f=d.getText();if(f=="<"+r.EM_DASH||f=="<-"){o.deleteText(d.start,d.end);d.start.span.insertText(r.LEFT_ARROW,d.start.offset);this.doc.moveCaret(this.doc.caret.start.prevPositionInSection()); this.doc.caret.updateAndroidCaretPosition();return false}}}})});define("qtext2/extensions",["shared/polyfills","qtext2/extension/tooltips","qtext2/extension/autolist","qtext2/extension/autolink","qtext2/extension/ellipses","qtext2/extension/hr","qtext2/extension/undo_state","qtext2/extension/mention","qtext2/extension/non_editable_cursors","qtext2/extension/smart_quotes","qtext2/extension/double_space","qtext2/extension/dashes","qtext2/extension/link_interaction","qtext2/extension/arrows"],function ee(require,exports,e){var t=require("qtext2/extension/tooltips").Tooltips,n=require("qtext2/extension/autolist").Autolist,i=require("qtext2/extension/autolink").Autolink,r=require("qtext2/extension/ellipses").Ellipses,s=require("qtext2/extension/hr").HR,o=require("qtext2/extension/undo_state").UndoState,a=require("qtext2/extension/mention").Mention,d=require("qtext2/extension/non_editable_cursors").NonEditableCursors,c=require("qtext2/extension/smart_quotes").SmartQuotes,l=require("qtext2/extension/double_space").DoubleSpace,f=require("qtext2/extension/dashes").Dashes,h=require("qtext2/extension/link_interaction").LinkInteraction,u=require("qtext2/extension/arrows").Arrows; exports.EXTENSIONS=[s,t,i,n,r,o,a,d,c,l,f,h,u]});define("qtext2/base",["shared/polyfills","shared/rangy","shared/browser","qtext2/constants","shared/log","qtext2/util","shared/util","qtext2/container","qtext2/position","qtext2/span","qtext2/quirks","shared/email","qtext2/undo","interface/settings","qtext2/keys","qtext2/shortcuts","qtext2/section","qtext2/sections/plain","qtext2/sections/lists","qtext2/sections/code","qtext2/sections/image","qtext2/sections/horizontal_rule","qtext2/formatting_state","qtext2/caret","qtext2/sections/embed","shared/client","qtext2/modifiers","qtext2/mutations","qtext2/parser","qtext2/commands","qtext2/extensions"],function te(require,exports,e){var t=require("shared/rangy"),n=require("shared/browser"),i=require("qtext2/constants").CONTENT_TYPES,r=require("shared/log").log,s=require("qtext2/util").Util,o=require("shared/util"),a=o.extend,d=require("qtext2/container").Container,c=require("qtext2/position").Position,l=require("qtext2/span").Span,f=require("qtext2/quirks").Quirks,h=require("shared/email").isValidEmail,u=require("qtext2/undo").UndoManager,p=require("interface/settings").pageIsMobile,g=require("qtext2/keys"),m=require("qtext2/shortcuts").SHORTCUTS,v=require("qtext2/section"),x=v.Section,C=require("qtext2/sections/plain").PlainSection,S=require("qtext2/sections/lists").UnorderedListSection,b=require("qtext2/sections/lists").OrderedListSection,E=require("qtext2/sections/code").CodeSection,_=require("qtext2/sections/image").ImageSection,y=require("qtext2/sections/horizontal_rule").HorizontalRuleSection,w=require("qtext2/formatting_state").FormattingState,T=require("qtext2/caret").Caret,N=require("qtext2/sections/embed").EmbedSection,q=require("shared/client"),R=require("qtext2/modifiers").canSetModifier,O; if(p){O=require("mobile_app2/messages")}r=r.bind(r,"qtext2");var D=d.create("doc",{init:function(e){t.rangy.init();this.disabledCommands=[];this.fromJSON(e);this._listeners={};this.node.setAttribute("contenteditable","true");this._attachEventListeners();this._commands={};this._attachCommands();this._extensions=[];this._initExtensions();var n=require("qtext2/mutations").MutationFixer;this.mutationFixer=new n(this);var i=this.firstChild().firstChild();this.caret=new T(i.first(),i.first(),this);this.formattingState=new w(this.caret);this.undoManager=new u(e);this.linkSelector=null;this.imageUploader=null;this.photoSearch=null;this._backspaceCount=0;this._runForever(this._updatePlaceholder.bind(this));this.linkInputFocus=true},setLinkInputFocus:function(e){this.linkInputFocus=e},destroy:function(){this._destroyed=true;s.safeRemoveChild(this.node,this.node.parentElement);this._extensions.forEach(function(e){e.destroy()})},contains:function(e){return this.node.contains(e)},isEmpty:function(){ return this.children.length==1&&this.children[0].isEmpty()},isOnlyWhiteSpace:function(){return this.children.every(function(e){return e.isOnlyWhiteSpace()})},getLength:function(){var e=0;this.children.forEach(function(t){e+=t.getLength()});return e},disableCommands:function(e){this.disabledCommands=e||[]},isDisabledCommand:function(e){return this.disabledCommands.indexOf(e)!=-1},allowsMultipleSections:function(){return!this.isDisabledCommand("return")},disable:function(){this.node.removeAttribute("contenteditable")},enable:function(){this.node.setAttribute("contenteditable","true")},focus:function(){if(!this.node){return}var e=window.scrollX,t=window.scrollY;this.node.focus();window.scrollTo(e,t);this.moveCaret(this.caret.start,this.caret.end,true)},clear:function(){this.fromJSON({})},forceDomReflow:function(){this.fromJSON(this.toJSON())},toJSON:function(){var e={sections:[],caret:this.caret.toJSON()};this.children.forEach(function(t){e.sections.push(t.toJSON())});return s.removeNullValues(e); },fromJSON:function(e){var t,n,i=this;this.removeChildren();if(e.sections&&e.sections.length){e.sections.forEach(function(e){i.appendChild(x.fromJSON(e))})}else{this.appendChild(new C)}if(e.caret){t=e.caret.start;n=e.caret.end;this.moveCaret(new c(this.children[t.sectionIdx].children[t.spanIdx],t.offset),new c(this.children[n.sectionIdx].children[n.spanIdx],n.offset))}else{this.caret=new T(this.lastChild().last(),this.lastChild().last(),this)}},hasChanged:function(e){var t=this.toJSON();return!s.jsonEqual(t.sections,e.sections)},on:function(e,t){this._listeners[e]=this._listeners[e]||[];this._listeners[e].push(t)},trigger:function(e){if(!(e in this._listeners)){return null}var t=this._listeners[e],n=false,i,r,s,o=new Array(arguments.length);o[0]=n;for(i=1;i20&&i=="backspace"){i="delete-previous-word"}if(i in this._commands){s=this._commands[i];return s.run.apply(s,[i].concat(r))}},progressivelyExitSection:function(e,t){if(e.getIndent()>0){e.setIndent(e.getIndent()-1)}else if(!(e instanceof C)&&!t){e=e.changeType(C);var n=e.previousSibling();while(n&&n.isEditable()&&(n.isEmpty()||n.node.textContent.trim()==="")){var i=n;n=n.previousSibling();this.removeChild(i)}}else if(e.isQuoted()){e.setQuoted(false)}return e},toggleModifier:function(e){var t,n;this.formattingState.toggleModifier(this.caret,e);if(this.caret.isCollapsed()){return false}t=this._getSelectedSpans(false);n=t[0].getModifier(e);t.forEach(function(t){if(!t.isEditable()){return}if(n){t.removeModifier(e)}else{t.setModifier(e,true)}});return false},toggleSectionType:function(e){var t=this._getSelectedSections(),n=t[0]instanceof e,i=this.caret.start.clone(),r=this.caret.end.clone(); t.forEach(function(t){if(t.isEditable()){if(n){t.changeType(C)}else{t.changeType(e)}}});this.moveCaret(i,r);if(!n&&t.length>1){this.forceDomReflow()}return false},cloneSelection:function(){var e=this,t=this._getSelectedSpans(false),n=[],i,r;t.forEach(function(t){if(i!=t.parent){i=t.parent;r=t.parent.toJSON();r.spans=[];if(!e.caret.containsEntireSection(i)){r.type="plain"}n.push(r)}r.spans.push(t.toJSON())});return n.map(function(e){return x.fromJSON(e)})},sanitizeContent:function(e){var t=this;var n=e.filter(function(e){if(e instanceof _&&t.isDisabledCommand("image")){return false}if(e instanceof N&&t.isDisabledCommand("video")){return false}if(e instanceof y&&t.isDisabledCommand("horizontal-rule")){return false}return true});if(!t.allowsMultipleSections()&&e.length>0){n=[n.reduce(function(e,t){e.merge(t);return e})]}n=n.map(function(e){var n=e instanceof E&&t.isDisabledCommand("code");n=n||e instanceof S&&t.isDisabledCommand("unordered_list");n=n||e instanceof b&&t.isDisabledCommand("ordered_list"); if(n){e=e.changeType(C)}e.setQuoted(e.isQuoted()&&!t.isDisabledCommand("quote"));e.children.forEach(function(e){for(var n in e.modifiers){if(t.isDisabledCommand(n)){e.removeModifier(n)}}});return e});return n},saveState:function(){this.undoManager.add(this.toJSON());this.trigger("meaningfulChange")},setImageUploader:function(e){this.imageUploader=e},setLinkSelector:function(e){var t=this;t.linkSelector=e;e.onSubmit(function(n){var i=t._insertOrModifyLink(n.text,n.target||{type:"url",url:n.url});e.hide();t.focus();t.moveCaret(i.nextSibling().last());setTimeout(function(){t.focus();t.caret.scrollIntoViewIfNeeded()},0);t.saveState()});e.onCancel(function(n){e.hide();t.focus();if(n){var i=t.caret.start.span.modifiers,r=new l(n,i);t.insertSpan(t.caret.start,r);t.moveCaret(r.last())}})},setPhotoSearch:function(e){var t=this;t.photoSearch=e;e.onInsert(function(n){t.handleCommand("image",[n]);e.hide();t.focus()});e.onCancel(function(){e.hide();t.focus()})},detectLinksInSection:function(e){var t=this; e.children.forEach(function(n){if(!R(n,"link")||n.hasModifier("link")){return}var i=s.linkify(n.getText());if(i.length===0||i.length==1&&!i[0].href){return}var r=n.modifiers;i.forEach(function(i){var s=i.text,o=i.href,a=new l(s,r);if(o){a.setModifier("link",{type:"url",url:o},true);t._previewLink(a)}e.insertBefore(a,n)});e.removeChild(n)})},uploadImageUrl:function(e,t){var n=this;this.imageUploader.showUploading();this.imageUploader.uploadImageUrl(e,function(e){if(t.previousSibling()){n.moveCaret(t.previousSibling().last())}else if(t.nextSibling()){n.moveCaret(t.nextSibling().first())}else{t.parent.insertBefore(new l(" "),t);n.moveCaret(t.previousSibling().first())}t.parent.removeChild(t);n.insertImages([e]);n.imageUploader.hideDropZone()})},insertSpan:function(e,t){var n;if(e.atSpanStart()){n=e.span}else if(e.atSpanEnd()){n=e.span.nextSibling()}else{n=e.span.split(e.offset)}e.span.parent.insertBefore(t,n);if(e.span.getText()===""){e.span.parent.removeChild(e.span)}return t.last()},insertImages:function(e){ this.handleCommand("image",e)},moveCaret:function(e,t,n){var i=this.caret.move(e,t,n);this.trigger("caretMoved");return i},moveCaretEnd:function(e){var t=this.caret.moveEnd(e);this.trigger("caretMoved");return t},moveCaretStart:function(e){var t=this.caret.moveStart(e);this.trigger("caretMoved");return t},_updatePlaceholder:function(){var e=this.isEmpty()&&this.children[0]instanceof C&&!this.children[0].isQuoted();if(e){this.node.classList.add("empty")}else{this.node.classList.remove("empty")}},_handleEmptySpan:function(e,t){var n,i,r;if(e.parent.firstChild()==e&&e.parent.children.length==1){e.setPlaceholder();return e.first()}i=e.previousSibling();r=e.nextSibling();e.parent.removeChild(e);if(t){if(i){e=i;n=i.getLength()}else{e=r;n=0}}else{if(r){e=r;n=0}else{e=i;n=i.getLength()}}return new c(e,n)},updateCaret:function(){var e=this.caret.update();if(e){this.trigger("caretMoved");this.trigger("meaningfulChange")}this._updateActiveSpans();return e},_updateCaretAndFormattingState:function(){ var e=this.updateCaret();if(e){this._updateFormattingState()}},_updateActiveSpans:function(){var e=this.node.querySelectorAll(".active"),t=this.caret.start.span,n=this.caret.end.span,i,r;for(i=0;it){if(n0){ e=e.split(t,true)}this.formattingState.apply(e);this.moveCaret(e.last());this._updateFormattingState()}else if(n0){i.span=n.span=n.span.split(n.offset,e); }t=[n.span]}else{if(n.offset>0){if(n.offset==n.span.getLength()){n.span=n.span.next()}else{n.span=n.span.split(n.offset,e)}}if(i.offset